<extend name="Public/base"/>

<block name="body">
	<!-- 标题栏 -->
	<div class="main-title">
		<h2>数据备份</h2>
	</div>
	<!-- /标题栏 -->

	<div class="cf">
		<a id="export" class="btn" href="javascript:;" autocomplete="off">立即备份</a>
		<a id="optimize" class="btn" href="{:U('optimize')}">优化表</a>
		<a id="repair" class="btn" href="{:U('repair')}">修复表</a>
	</div>

	<!-- 应用列表 -->
	<div class="data-table table-striped">
		<form id="export-form" method="post" action="{:U('export')}">
			<table>
				<thead>
				<tr>
					<th width="48"><input class="check-all" checked="chedked" type="checkbox" value=""></th>
					<th>表名</th>
					<th width="120">数据量</th>
					<th width="120">数据大小</th>
					<th width="160">创建时间</th>
					<th width="160">备份状态</th>
					<th width="120">操作</th>
				</tr>
				</thead>
				<tbody>
				<volist name="list" id="table">
					<tr>
						<td class="num">
							<input class="ids" checked="chedked" type="checkbox" name="tables[]" value="{$table.name}">
						</td>
						<td>{$table.name}</td>
						<td>{$table.rows}</td>
						<td>{$table.data_length|format_bytes}</td>
						<td>{$table.create_time}</td>
						<td class="info">未备份</td>
						<td class="action">
							<a class="ajax-get no-refresh" href="{:U('optimize?tables='.$table['name'])}">优化表</a>&nbsp;
							<a class="ajax-get no-refresh" href="{:U('repair?tables='.$table['name'])}">修复表</a>
						</td>
					</tr>
				</volist>
				</tbody>
			</table>
		</form>
	</div>
	<!-- /应用列表 -->
</block>

<block name="script">
	<script type="text/javascript">
		(function ($) {
			var $form = $("#export-form"), $export = $("#export"), tables
			$optimize = $("#optimize"), $repair = $("#repair");

			$optimize.add($repair).click(function () {
				$.post(this.href, $form.serialize(), function (data) {
					if (data.status) {
						updateAlert(data.info, 'alert-success');
					} else {
						updateAlert(data.info, 'alert-error');
					}
					setTimeout(function () {
						$('#top-alert').find('button').click();
						$(that).removeClass('disabled').prop('disabled', false);
					}, 1500);
				}, "json");
				return false;
			});

			$export.click(function () {
				$export.parent().children().addClass("disabled");
				$export.html("正在发送备份请求...");
				$.post(
						$form.attr("action"),
						$form.serialize(),
						function (data) {
							if (data.status) {
								tables = data.tables;
								$export.html(data.info + "开始备份，请不要关闭本页面！");
								backup(data.tab);
								window.onbeforeunload = function () {
									return "正在备份数据库，请不要关闭！"
								}
							} else {
								updateAlert(data.info, 'alert-error');
								$export.parent().children().removeClass("disabled");
								$export.html("立即备份");
								setTimeout(function () {
									$('#top-alert').find('button').click();
									$(that).removeClass('disabled').prop('disabled', false);
								}, 1500);
							}
						},
						"json"
				);
				return false;
			});

			function backup(tab, status) {
				status && showmsg(tab.id, "开始备份...(0%)");
				$.get($form.attr("action"), tab, function (data) {
					if (data.status) {
						showmsg(tab.id, data.info);

						if (!$.isPlainObject(data.tab)) {
							$export.parent().children().removeClass("disabled");
							$export.html("备份完成，点击重新备份");
							window.onbeforeunload = function () {
								return null
							}
							return;
						}
						backup(data.tab, tab.id != data.tab.id);
					} else {
						updateAlert(data.info, 'alert-error');
						$export.parent().children().removeClass("disabled");
						$export.html("立即备份");
						setTimeout(function () {
							$('#top-alert').find('button').click();
							$(that).removeClass('disabled').prop('disabled', false);
						}, 1500);
					}
				}, "json");

			}

			function showmsg(id, msg) {
				$form.find("input[value=" + tables[id] + "]").closest("tr").find(".info").html(msg);
			}
		})(jQuery);
	</script>
</block>